Page({
  data: {
    fixedAddress: "", // 固定地址名称
    longitude: 116.397428, // 默认北京中心点经度
    latitude: 39.90923,    // 默认北京中心点纬度
    markers: [],           // 地图标记点
    hasLocation: false     // 是否已定位到有效位置
  },

  onLoad(options) {
    // 页面加载时可以直接定位到预设地址
    // this.goToFixedLocation();
    if (options.address) {
      this.setData({
        fixedAddress: options.address
      });
      this.goToFixedLocation();
    }
  },

  // 前往固定位置
  goToFixedLocation() {
    wx.showLoading({
      title: '正在定位...',
      mask: true
    });

    // 使用腾讯地图API进行地理编码
    wx.request({
      url: 'https://apis.map.qq.com/ws/geocoder/v1/',
      data: {
        address: this.data.fixedAddress,
        key: 'OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77' // 测试KEY，正式环境请申请自己的
      },
      success: (res) => {
        wx.hideLoading();
        if (res.data.status === 0) {
          const location = res.data.result.location;
          this.updateMapLocation(location.lng, location.lat);
          
          wx.showToast({
            title: '已定位',
            icon: 'success'
          });
        } else {
          wx.showToast({
            title: '地址解析失败',
            icon: 'none'
          });
          this.setData({ hasLocation: false });
        }
      },
      fail: (err) => {
        wx.hideLoading();
        wx.showToast({
          title: '网络请求失败',
          icon: 'none'
        });
        this.setData({ hasLocation: false });
      }
    });
  },

  // 更新地图位置
  updateMapLocation(longitude, latitude) {
    this.setData({
      longitude,
      latitude,
      hasLocation: true,
      markers: [{
        id: 0,
        latitude,
        longitude,
        title: this.data.fixedAddress,
        iconPath: '/assets/指针.png',
        width: 30,
        height: 30,
        callout: {
          content: this.data.fixedAddress,
          color: '#ffffff',
          bgColor: '#1aad19',
          padding: 10,
          borderRadius: 4,
          display: 'ALWAYS'
        }
      }]
    });
  },

  // 导航到当前位置
  onOpenLocation() {
    if (!this.data.hasLocation) return;

    wx.openLocation({
      latitude: this.data.latitude,
      longitude: this.data.longitude,
      name: this.data.fixedAddress,
      address: this.data.fixedAddress,
      scale: 18
    });
  }
});